﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using FastDATA;

namespace CursoUNICEUB
{
    public partial class GerenciarCurso : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["aluno"] == null)
                    Util.showMessage(this, "Usuario Não Logado", "../Account/Login.aspx?lastpage=GerenciarCurso.aspx");
                else
                {
                    DEAluno aluno = (DEAluno)Session["aluno"];
                    if (!aluno.Administrador)
                        Util.showMessage(this, "Apenas Administradores podem entrar nessa página", "../Default.aspx");
                    else
                    {
                        if(String.IsNullOrEmpty(Request.QueryString["codigo"]))
                            Util.showMessage(this, "Código inválido", "../Default.aspx");
                        else{
                            CarregarCurso();
                            txtEmail.Text = Environment.NewLine + "Atenciosamente, " + aluno.Nome;
                        }
                    }
                }
            }
        }

        protected void btnAcao_Click(object sender, EventArgs e)
        {
            Button bntAcao = sender as Button;
            Int32 id = Convert.ToInt32(bntAcao.CommandArgument);
            using (DCCursoDataContext banco = new DCCursoDataContext())
            {
                var aluno = banco.DEAlunos.Single(q => q.Codigo.Equals(id));

                if (aluno.STPago)
                {
                    aluno.STPago = false;
                    bntAcao.Text = "A";
                }
                else
                {
                    aluno.STPago = true;
                    bntAcao.Text = "D";
                }

                banco.SubmitChanges();
            }

            sender = bntAcao.Text;
        }

        protected void btnEnviarEmail_Click(object sender, EventArgs e)
        {
            try
            {
                string msg = txtEmail.Text.Replace(Environment.NewLine, "<br />");
                string email = "";

                for (int i = 0; i < grvAluno.Rows.Count; i++)
                {
                    if (i < grvAluno.Rows.Count - 1)
                        email = email + grvAluno.Rows[i].Cells[1].Text + ",";
                    else
                        email = email + grvAluno.Rows[i].Cells[1].Text;
                }
                EmailSender.enviar("CursoDotNet", msg, email, true);

                Util.showMessage(this, "E-mail enviado com sucesso");
            }
            catch
            {
                Util.showMessage(this, "Houve Falha ao enviar o E-mail");
            }
        }

        private void CarregarCurso()
        {
            int codigo = Convert.ToInt32(Request.QueryString["codigo"]);
            using (DCCursoDataContext banco = new DCCursoDataContext())
            {
                DECurso curso = banco.DECursos.SingleOrDefault(q => q.Codigo == codigo);

                if (curso == null)
                    Util.showMessage(this, "Curso não encontrado", "../Default.aspx");
                else
                {
                    this.lblCurso.Text = curso.DETipoCurso.Nome;
                    this.lblInicio.Text = curso.InicioShort;
                    this.lblFim.Text = curso.FimShort;
                    this.lblDias.Text = curso.DECursoHorario.Dias + " das " + curso.DECursoHorario.HoraInicial + " às " + curso.DECursoHorario.HoraFinal;
                    this.linkStatus.Text = curso.DescricaoStatus;
                    this.hplCalendario.NavigateUrl = "CalendarioCurso.aspx?Curso=" + codigo;
                    this.hplCalendarioCadastro.NavigateUrl = "CalendarioCadastro.aspx?codigo=" + codigo;

                    this.grvAluno.DataSource = curso.DECursoAlunos;
                    this.grvAluno.DataBind();
                }
            }
        }

        protected void linkStatus_Click(object sender, EventArgs e)
        {
            int codigo = Convert.ToInt32(Request.QueryString["codigo"]);
            using (DCCursoDataContext banco = new DCCursoDataContext())
            {
                DECurso curso = banco.DECursos.SingleOrDefault(q => q.Codigo == codigo);

                if (curso == null)
                    Util.showMessage(this, "Curso não encontrado", "../Default.aspx");
                else
                {
                    if (curso.Status == 4)
                        Util.showMessage(this, "Este curso já está finalizado");
                    else
                    {
                        curso.Status++;
                        banco.SubmitChanges();
                        this.linkStatus.Text = curso.DescricaoStatus;
                    }
                }
            }
        }
    }
}